home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_bas / basupd10 / basupd.doc < prev    next >
Text File  |  1992-06-18  |  8KB  |  261 lines

  1.       BASUPD  Copyright (c) 1992  Thomas G. Hanlin III
  2.  
  3.                      BasUpd Library, v1.0
  4.  
  5.                    for QuickBASIC 4.0 - 4.5
  6.  
  7.  
  8.  
  9. This library provides a set of routines which mimic new
  10. commands in other Microsoft BASIC compilers, such as PDS 7.x
  11. and Visual Basic.  In effect, it updates your QuickBASIC
  12. compiler to take advantage of these new features.  This adds a
  13. little more life to good ol' QuickBASIC and keeps you in touch
  14. with the ever-evolving BASIC language.
  15.  
  16. The included libraries are made for QuickBASIC 4.5.  If you are
  17. using one of the QuickBASIC 4.0, 4.0a, 4.0b releases, you must
  18. recompile the .BAS files and recreate the libraries.
  19.  
  20. The BasUpd library is protected by copyright.  However, it may
  21. be distributed freely, provided that all files are included
  22. together in original condition-- that is, you may not add
  23. files, remove files, or alter files in the BasUpd library.
  24.  
  25. BasUpd routines may be used in your program without royalties
  26. or licensing fees of any kind.
  27.  
  28. If you find BasUpd useful, you may want to check out my other
  29. free and shareware products for BASIC languages.  These include
  30. a wide assortment of libraries, utilities, and other goodies.
  31. See WHERE.BBS for a list of BBSes which have my latest products
  32. or send $5 for a set of sampler disks to:
  33.  
  34.    Thomas G. Hanlin III
  35.    3544 E. Southern Ave. #104
  36.    Mesa, AZ 85204
  37.  
  38. The sampler fee is refundable towards any registration.  Please
  39. specify disk size.  Foreign orders must be by international
  40. money order in U.S. funds and must include $4 postage.
  41.  
  42.                          Using BasUpd
  43.  
  44.  
  45.  
  46. BasUpd is a library of BASIC and assembly language routines.
  47. To use BasUpd, you must start QB with the /L switch, telling it
  48. to load the BasUpd library.  For example:
  49.  
  50.    QB program.bas /L BASUPD
  51.  
  52. or
  53.  
  54.    QB /L BASUPD
  55.  
  56. If you compile from the command line, using BC, you must tell
  57. LINK to bring in the necessary routines from the BASUPD
  58. library.  For example:
  59.  
  60.    BC program.bas/O;
  61.    LINK program.obj/EX,,NUL,BASUPD
  62.  
  63. You also need to include a "metacommand" in your program which
  64. loads the DECLARE information for the functions.  The first
  65. line in your program should read something like this:
  66.  
  67.    REM $INCLUDE: 'BASUPD.BI'
  68.  
  69. That's really all there is to it.  Once loaded, these routines
  70. act just like part of the BASIC language.
  71.  
  72. The BasUpd library provides you with almost all of the new
  73. BASIC functions from PDS 7.x and Visual Basic.  They are made
  74. to work as closely as possible to "the real thing".  This
  75. applies quite specifically to the time/date routines, which
  76. return the same "serial number" value as the equivalent PDS/VB
  77. routines.  So, if you move to one of these compilers, you will
  78. be able to use its functions instead of those in BasUpd with a
  79. minimum of fuss.
  80.  
  81. Name: ChDrive
  82.  
  83. This routine allows you to change the default drive.  The drive
  84. letter may be either uppercase or lowercase.  Only the first
  85. character of the string is examined, so it doesn't matter if
  86. you use a colon for the drive spec.
  87.  
  88.    ChDrive Drive$
  89.  
  90.  
  91.  
  92. Name: CurDir$
  93.  
  94. This function returns the default subdirectory on the specified
  95. drive.  The drive letter may be either uppercase or lowercase.
  96. Only the first character of the string is examined, so it
  97. doesn't matter if you use a colon for the drive spec.  If you
  98. just want to specify the current drive, you can use a null
  99. string for the drive spec.
  100.  
  101.    Subdir$ = CurDir$("C:")
  102.  
  103. The result is a fully-specified path.  For instance, the above
  104. example might have returned something like "C:\BASUPD".
  105.  
  106.  
  107.  
  108. Name: DateSerial#
  109.  
  110. This function returns a "serial number" for a specified date.
  111. See the appendix for a discussion of time/date serial numbers.
  112.  
  113. You may specify the year as 1753-2078, or as 0-178 (where 0 is
  114. assumed to mean 1900, and so forth).  It might be wise to
  115. restrict that to 0-99 instead of 0-178; while Microsoft's docs
  116. say that 0-178 works, their version actually generates an error
  117. if 100-178 is used.  The BasUpd version accepts the full 0-178
  118. range.
  119.  
  120.    Serial# = DateSerial#(YearNr%, MonthNr%, DayNr%)
  121.  
  122. Please note the unusual order of the parameters.  Also, be
  123. careful not to use "Year", "Month", or "Day" as variable names,
  124. since these are reserved words providing other time/date
  125. functions.
  126.  
  127.  
  128.  
  129. Name: Day%
  130.  
  131. This function returns the day corresponding to a specified
  132. time/date serial number.
  133.  
  134.    DayNr% = Day%(Serial#)
  135.  
  136. Name: Error$
  137.  
  138. This function returns the error message associated with a
  139. specific error number.  This would most often be used as part
  140. of an error-trapping routine.  Note that the built-in BASIC
  141. function ERR tells you the current error number.
  142.  
  143.    ErrorMsg$ = Error$(ErrorNumber%)
  144.  
  145.  
  146.  
  147. Name: Hour%
  148.  
  149. This function returns the hour corresponding to a specific
  150. time/date serial number.
  151.  
  152.    HourNr% = Hour%(Serial#)
  153.  
  154.  
  155.  
  156. Name: Minute%
  157.  
  158. This function returns the minute corresponding to a specific
  159. time/date serial number.
  160.  
  161.    MinuteNr% = Minute%(Serial#)
  162.  
  163.  
  164.  
  165. Name: Month%
  166.  
  167. This function returns the month corresponding to a specific
  168. time/date serial number.
  169.  
  170.    MonthNr% = Month%(Serial#)
  171.  
  172.  
  173.  
  174. Name: Now%
  175.  
  176. This function returns a time/date serial number for the current
  177. time and date.
  178.  
  179.    Serial# = Now%
  180.  
  181. Name: Second%
  182.  
  183. This function returns the second corresponding to a specific
  184. time/date serial number.
  185.  
  186.    SecondNr% = Second%(Serial#)
  187.  
  188.  
  189.  
  190. Name: TimeSerial#
  191.  
  192. This function returns a "serial number" for a specified time.
  193. See the appendix for a discussion of time/date serial numbers.
  194.  
  195. The hour is specified using 24-hour (military) time, with a
  196. range of 0-23 (midnight-11pm).
  197.  
  198.    Serial# = TimeSerial#(HourNr%, MinuteNr%, SecondNr%)
  199.  
  200. Be careful not to use "Hour", "Minute", or "Second" as variable
  201. names, since these are reserved words providing other time/date
  202. functions.
  203.  
  204.  
  205.  
  206. Name: WeekDay%
  207.  
  208. This function returns the day of the week corresponding to a
  209. specific time/date serial number.  This is returned as a number
  210. 1-7, where 1 = Sunday, 2 = Monday, ..., 7 = Saturday.
  211.  
  212.    WeekDayNr% = WeekDay%(Serial#)
  213.  
  214.  
  215.  
  216. Name: Year%
  217.  
  218. This function returns the year corresponding to a specific
  219. time/date serial number.
  220.  
  221.    YearNr% = Year%(Serial#)
  222.  
  223.                           Appendix A
  224.  
  225.                    Time/Date Serial Numbers
  226.  
  227.  
  228.  
  229. The new time and date routines are based on an encoded value
  230. called a "serial number" (Microsoft's choice, not mine).  This
  231. is a double-precision floating point value which may include
  232. either time or date information, or both.
  233.  
  234. To decode a serial number, divide it into left and right parts
  235. at the decimal point.  The part to the left of the decimal
  236. represents the date.  The part to the right of the decimal
  237. gives the time.
  238.  
  239. The date is specified in days, based on December 30, 1899.
  240. Dates before then will be negative.  Dates after then will be
  241. positive.  Years from 1753-2078 are supported.
  242.  
  243. The time is specified as a number indicating how much of the
  244. day has been used.  The easiest way to calculate it is to
  245. convert the time to the number of seconds past midnight:
  246.  
  247.    TimeNow# = (HourNr * 60 + MinuteNr) * 60 + SecondNr
  248.  
  249. Divide this by the number of seconds in a day (86,400), and
  250. you've got the same number as used in a time/date serial
  251. number.
  252.  
  253. The approach used to creating a time/date serial number means
  254. that you can use these numbers for comparison or sorting: a
  255. larger serial number will always indicate a later time/date
  256. than a smaller serial number.  Date manipulation is also
  257. possible by adding/subtracting days from the serial number,
  258. etc.  Date validation can be accomplished by converting a date
  259. to a serial number and back, then comparing the resulting
  260. year/month/day to the original.
  261.